#ifndef INTERVAL_LIST
#define INTERVAL_LIST	
#include <deque>
#include "Global.h"
using namespace std;

class IntervalList
{
private:
	deque<GID_T> m_data;
	//GUINT32 m_iter;
public:
	IntervalList(){};
	void push_back(GID_T KmerID);
	void push_front(GID_T KmerID);
	void concat(const IntervalList &IList);
	void reverseConcat(const IntervalList &IList);
	int  GetSize();
	GID_T front() const;
	GID_T back() const;
	bool contain(IntervalList& sub);
	//IntervalList intersect(IntervalList& list1, IntervalList& list2) const;
	//void resetCursor();
	//bool hasNext();
	//GINT64 next();
	bool include(IntervalList &sub,int start);
	GINT64 getElement(int i);
	deque<GID_T>::const_iterator begin();
	deque<GID_T>::const_iterator end();
};
#endif